package chapter07;

import java.util.ArrayList;

public class Java04_Collection_List_ArrayList {
    public static void main(String[] args) {
        // TODO 集合 - ArrayList常用方法
        ArrayList list = new ArrayList();

        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");

        // add(索引 , 数据)方法可以传递两个参数;相当于执行的是插入操作
        list.add(1,"zhangsan");
        System.out.println("-----------------------");

        // addAll(集合)方法可以添加一个集合
        ArrayList otherList = new ArrayList();
        otherList.add("1");
        otherList.add("2");
        otherList.add("3");
        list.addAll(otherList);
        System.out.println("-----------------------");

        // size方法表示集合内部数据的数量
        System.out.println(list.size());    // 7
        System.out.println("-----------------------");

        // 判断集合中是否存在某数据，返回布尔类型的数据
        System.out.println(list.contains("zhaoliu"));   // true
        System.out.println("-----------------------");

        // 判断数据在集合中的索引位置,获取的是数据出现的第一个索引位置，如果数据在集合中不存在则返回-1
        System.out.println(list.indexOf("zhangsan"));   // 0
        System.out.println(list.indexOf("zhangsan123"));   // -1
        // 获取数据出现在集合中的最后一个位置
        System.out.println(list.lastIndexOf("zhangsan"));   // 1
        System.out.println("-----------------------");

        // 将集合转换成数组
        Object[] array = list.toArray();
        System.out.println("-----------------------");

        // 克隆一个相同的集合，只复制内存地址，数据类型为通用类型Object
        Object clone = list.clone();
        ArrayList cloneList = (ArrayList) clone;

        // 清空集合内的所有数据
        list.clear();
        System.out.println("-----------------------");

        // 删除指定集合中的数据
        list.removeAll(otherList);

        // 判断集合内的数据是否为空
        System.out.println(list.isEmpty()); // true
        System.out.println("-----------------------");

        System.out.println(list);   // []
        System.out.println(cloneList);  // [zhangsan, zhangsan, lisi, wangwu, 1, 2, 3]
    }
}
